#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2020/11/4 23:08
# @Author  : LJ
# @Site    : 
# @File    : 第三周_第三节.py
# @Software: PyCharm


def cache_deco(func):
    cache = {}

    def wrapper(num):
        if num in cache:
            return cache[num]
        result = func(num)
        cache[num] = result
        return result
    return wrapper


@cache_deco
def fei_bo(num):
    print("called")
    if num <= 1:
        return num
    else:
        return (fei_bo(num - 1) + fei_bo(num - 2))
print(fei_bo(10))
'''
生成器：一种特殊的迭代器，提供惰性求值，强调的是指令上的执行，带有yelid的关键字的函数是生成器函数，生成器函数返回是生成器
迭代器：实行位置索引的对象，有__next__方法的可迭代对象是迭代器，可迭代对象不一定是迭代器。迭代器既要有iter方法还要有next方法，迭代器是基于数据的，通过next方法提取元素
'''